﻿Imports BUS
Imports DTO



Public Class MH_BaoCaoTongKetHocKy

    Private Sub btnDong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDong.Click
        Me.Close()
    End Sub

    Private Sub MH_BaoCaoTongKetHocKy_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Load bang hoc ky
        Dim hkBUS As New HocKyBUS
        Dim dt As New DataTable
        dt = hkBUS.LayBang()
        cboHocKy.DataSource = dt
        cboHocKy.DisplayMember = ("HocKy")
        cboHocKy.ValueMember = ("MaHocKy")
    End Sub

    Private Sub btnLayBaoCao_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLayBaoCao.Click
        'Ý tưởng:
        '   + Xóa toàn bộ dữ liệu CŨ trong TEMP_TONGKET
        '   + Lấy dữ liệu từ bảng DIEMMONHOC, CHITIETDIEM, LOP
        '   + Tính toán
        '   + Insert kết quản vào bảng TEMP_TONGKET (đây là 1 bảng tạm)
        '   + Lấy dữ liệu đưa lên DataGridView 


        'Xoa toan bo trong bang TEMP_TONGKET
        ThuVienChungBUS.ChayQuery("DELETE FROM TEMP_TONGKET")

        'Lấy điểm chuẩn từ bảng tham số
        Dim strSQL As String = " SELECT * FROM THAMSO "
        Dim tvcBUS As New ThuVienChungBUS()
        Dim dt As DataTable = tvcBUS.LayBang(strSQL)
        Dim _diemChuan As Integer = Integer.Parse(dt.Rows(0)("DiemChuanDatMon"))

        'Lấy danh sách lớp
        Dim lopBUS As New LopBUS
        Dim dsLop As New List(Of LopDTO)
        dsLop = lopBUS.LayDanhSach

        'Duyet tung lop
        For i As Integer = 0 To dsLop.Count - 1

            strSQL = " SELECT HOCSINH.HoTen, HOCSINH.NgaySinh,    AVG( ( ((CHITIETDIEM.Diem15P+CHITIETDIEM.Diem1T * 2 ) /3)*2+CHITIETDIEM.DiemHK) /3 ) AS TBHK "
            strSQL = strSQL + " FROM HOCSINH INNER JOIN (DIEMMONHOC INNER JOIN CHITIETDIEM ON DIEMMONHOC.MaDiemMonHoc = CHITIETDIEM.MaDiemMonHoc) ON HOCSINH.MaHocSinh = CHITIETDIEM.MaHocSinh, CHITIETDIEM c, DIEMMONHOC d "
            strSQL = strSQL + " WHERE DIEMMONHOC.MaLop=" + dsLop(i).MaLop.ToString() + " AND DIEMMONHOC.MaHocKy=" + cboHocKy.SelectedValue.ToString() + " "
            strSQL = strSQL + " GROUP BY HOCSINH.MaHocSinh, HOCSINH.HoTen, HOCSINH.NgaySinh "

            dt = tvcBUS.LayBang(strSQL) 'Bảng này chứa tất cả hs thuộc lớp đang duyệt và TBHK của nó

            'Bây giờ xét thằng hs nào có TBHK >= _diemChuan thì tăng _soLuongDau lên
            Dim _soLuongDau As Integer = 0
            For j As Integer = 0 To dt.Rows.Count - 1
                Dim _tbHK As Double = Double.Parse(dt.Rows(j)("TBHK"))
                If (_tbHK >= _diemChuan) Then
                    _soLuongDau = _soLuongDau + 1
                End If
            Next

            'Cuối cùng là insert 1 dòng vào bảng TEMP_TONGKET
            'Bao gồm các field: TenLop, SiSo, SoLuongDat, MaHocKy
            strSQL = " INSERT INTO TEMP_TONGKET(TenLop, SiSo, SoLuongDat, MaHocKy) "
            strSQL = strSQL + " VALUES('" + dsLop(i).TenLop + "'," + dsLop(i).SiSo.ToString() + "," + _soLuongDau.ToString() + "," + cboHocKy.SelectedValue.ToString() + ") "

            ThuVienChungBUS.ChayQuery(strSQL)
        Next

        'Lay du lieu tu bang TEMP_TONGKET dua vao DataGridView
        strSQL = "SELECT TenLop,SiSo,SoLuongDat FROM TEMP_TONGKET"
        dt = tvcBUS.LayBang(strSQL)

        dgvDanhSach.Rows.Clear()
        For i As Integer = 0 To dt.Rows.Count - 1
            Dim _slDat As Integer = dt.Rows(i)("SoLuongDat")
            Dim _siSo As Integer = dt.Rows(i)("SiSo")
            Dim _tyLe As Double = Math.Round((_slDat * 100) / _siSo, 2)

            dgvDanhSach.Rows.Add(i + 1, dt.Rows(i)("TenLop"), dt.Rows(i)("SiSo"), dt.Rows(i)("SoLuongDat"), _tyLe.ToString() + " %")
        Next

       

    End Sub
End Class